package gui;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JMenu;
import javax.swing.UIManager;

import negocio.Administrativo;
import negocio.Usuario;
import negocio.Supervisor;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Principal {
	private Principal padre = this;
	private Recados recados = null;
	private ToolBackup backup = null;
	private Reportes reportes = null;
	private Tareas tareas = null;
	private Instructores instructores = null;
	private Aulas aulas = null;
	private Cursos cursos = null;
	private Clases clases = null;
	private Contactos contactos = null;
	private AlumnosBuscar clientesBuscar = null;
	private Cursadas cursadas = null;
	private UsuarioCambiarContrasenia cambCont = null;
	private Usuario_buscar usuarioBuscar = null;
	private UsuarioPerfil usuarioPerfil = null;
	private UsuarioCambiarContrasenia usuarioCambiarContrasenia = null;
	private InscribirCursada inscribirCursada = null;
	private Login padreLogin;
	private JFrame frame;
	private Administrativo adm;
	private Supervisor sup;
	private Usuario ins;
	
	
	
	public void nullrecados() {
		this.recados=null;
	}
	
	public void nullbackup() {
		this.backup=null;
	}
	
	public void nullreportes() {
		this.reportes=null;
	}
	
	public void nulltareas() {
		this.tareas=null;
	}
	
	public void nullinstructores() {
		this.instructores=null;
	}
	
	public void nullaulas() {
		this.aulas=null;
	}
	
	public void nullcursos() {
		this.cursos=null;
	}
	
	public void nullclases() {
		this.clases=null;
	}
	
	public void nullContactos() {
		this.contactos=null;
	}
	
	public void nullClinetesBuscar() {
		this.clientesBuscar=null;
	}
	
	public void nullCursadas() {
		this.cursadas=null;
	}
	
	public void nullusuariosperfil()
	{
		this.usuarioPerfil=null;
	}	
	
	public void nullUsuarioBuscar()
	{
		this.usuarioBuscar=null;
	}

	public void nullUsuarioCambiarContrasenia()
	{
		this.usuarioCambiarContrasenia = null;
	}
	
	public void nullInscribirCursada()
	{
		this.inscribirCursada = null;
	}
	
	
	
	
	 
	
	
//	/**
//	 * Launch the application.
//	 */
//	public static void main(String[] args) {
//		EventQueue.invokeLater(new Runnable() {
//			public void run() {
//				try {
//					Principal window = new Principal();
//					window.frame.setVisible(true);   //TODO: eliminar linea para tercer sprint por la ventana de login (Home del sistema sera)      			
//				} catch (Exception e) {
//					e.printStackTrace();
//				}
//			}
//		});
//	}
	
	
	
	/**
	 * Create the application.
	 */
	public Principal(Supervisor sup, Administrativo adm, Usuario ins, Login padreLogin) {
		
		  this.adm=adm;
		  this.sup=sup;
		  this.ins=ins;
		  this.padreLogin=padreLogin;
		
		//TODO:David
		  
		 
		  
		try 
		{
		   UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		} 
		catch (Exception e) {	}
		
		initialize();
	}

	/**
	 * Initialize the contents of the frame.
	 */
	private void initialize() {
		setFrame(new JFrame());
		getFrame().setBounds(100, 100, 800, 600);
		getFrame().setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		getFrame().getContentPane().setLayout(null);
		getFrame().setTitle("Administracion de cursos");
		
		getFrame().addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e){
				padreLogin.NullPrincipal();
				Login login = new Login();
				login.setVisible(true);
			}
		});
		
		JMenuBar menuBar = new JMenuBar();
		getFrame().setJMenuBar(menuBar);
		
		JMenu mnUsuarios = new JMenu("Usuarios");
		menuBar.add(mnUsuarios);
		
		JMenuItem mntmPerfil = new JMenuItem("Perfil...");
		mntmPerfil.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				if(usuarioPerfil== null) 
					usuarioPerfil= new UsuarioPerfil(padre);
				usuarioPerfil.setVisible(true);
				
			}
		});

		mnUsuarios.add(mntmPerfil);
		
		JMenuItem mntmBuscar_1 = new JMenuItem("Buscar...");
		mntmBuscar_1.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				if (usuarioBuscar==null) 
					usuarioBuscar= new Usuario_buscar(padre);
				usuarioBuscar.setVisible(true);
				
			}
		});
		mnUsuarios.add(mntmBuscar_1);
		
		JMenuItem mntmCambiarContrasena = new JMenuItem("Cambiar contrasena");
		mntmCambiarContrasena.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (usuarioCambiarContrasenia==null) 
					usuarioCambiarContrasenia= new UsuarioCambiarContrasenia(padre);
				usuarioCambiarContrasenia.setVisible(true);
			}
		});
		mnUsuarios.add(mntmCambiarContrasena);
		
		JMenu mnCursos = new JMenu("Cursos...");
		mnCursos.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				if (cursos == null) 
					cursos = new Cursos(padre);
				cursos.setVisible(true);
				
				
			}
		});
		menuBar.add(mnCursos);
		
		JMenu mnAulas = new JMenu("Aulas...");
		mnAulas.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				if(aulas==null)
					aulas = new Aulas(padre);
				aulas.setVisible(true);
				
			}
		});
		menuBar.add(mnAulas);
		
		JMenu mnInstructores = new JMenu("Instructores...");
		mnInstructores.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				if(instructores==null) 
					instructores = new Instructores(padre);
				instructores.setVisible(true);
				
			}
		});
		menuBar.add(mnInstructores);
		
		JMenu mnCursadas = new JMenu("Cursadas...");
		mnCursadas.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				if (cursadas==null) 
					cursadas = new Cursadas(padre);
				cursadas.setVisible(true);
				
			}
		});
		menuBar.add(mnCursadas);
		
		JMenu mnAlumnos = new JMenu("Alumnos");
		menuBar.add(mnAlumnos);
		
		JMenuItem mntmContactos = new JMenuItem("Contactos...");
		mntmContactos.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (contactos==null) 
					contactos = new Contactos(adm, sup);
				contactos.setVisible(true);
				
			}
		});
		mnAlumnos.add(mntmContactos);
		
		JMenuItem mntmInscribir = new JMenuItem("Inscribir...");
		mntmInscribir.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (inscribirCursada==null) 
					inscribirCursada = new InscribirCursada(padre);
				inscribirCursada.setVisible(true);
			}
		});
		mnAlumnos.add(mntmInscribir);
		
		JMenuItem mntmBuscar = new JMenuItem("Buscar...");
		mntmBuscar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(clientesBuscar==null)
					clientesBuscar = new AlumnosBuscar();
				clientesBuscar.setVisible(true);
				
			}
		});
		mnAlumnos.add(mntmBuscar);
		
		JMenu mnReportes = new JMenu("Reportes...");
		mnReportes.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				if(reportes==null) 
					reportes = new Reportes();
				reportes.setVisible(true);
				
			}
		});
		
		JMenu mnRecados = new JMenu("Recados...");
		mnRecados.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				if(recados == null) 
					recados = new Recados(padre);
				recados.setVisible(true);
				
			}
		});
		menuBar.add(mnRecados);
		
		JMenu mnTareas = new JMenu("Tareas...");
		mnTareas.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				if(tareas==null) 
					tareas = new Tareas();	
				tareas.setVisible(true);				
				
			}
		});
		menuBar.add(mnTareas);
		menuBar.add(mnReportes);
		
		JMenu mnHerramientas = new JMenu("Herramientas");
		menuBar.add(mnHerramientas);
		
		JMenuItem mntmBackup = new JMenuItem("backup...");
		mntmBackup.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				if(backup==null)
					backup = new ToolBackup();
				backup.setVisible(true);
				
			}
		});
		mnHerramientas.add(mntmBackup);
		
		JMenu mnSalir = new JMenu("Cerrar sesion...");
		mnSalir.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
							padreLogin.NullPrincipal();
							Login login = new Login();
							login.setVisible(true);
							getFrame().dispose();
						
			}
		});
		menuBar.add(mnSalir);
	}

	public JFrame getFrame() {
		return frame;
	}

	private void setFrame(JFrame frame) {
		this.frame = frame;
	}
}
